import java.util.HashMap;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 苏李涛
 * Date: 2024-10-22
 * Time: 23:45
 */

// 和为K的子数组
public class Demo {
    public int subarraySum(int[] nums, int k) {
        Map<Integer,Integer> hash = new HashMap<>();
        hash.put(0,1);//整个数组加起来等于K时，返回结果1


        //sum滚动实现前缀和
        int ret = 0, sum = 0;
        for(int x : nums) {

            //计算当前位置的前缀和次数
            sum += x;
            //统计前缀和
            ret += hash.getOrDefault(sum-k,0);
            //统计前缀和个数同时，前缀和放入哈希表里
            hash.put(sum,hash.getOrDefault(sum,0)+1);
        }

        return ret;
    }
}
